package com.sugon.modules.sys.service;

import com.sugon.entity.DeviceInfoEntity;
import com.sugon.entity.MaterialBaseEntity;
import com.sugon.entity.SparePartEntity;
import com.sugon.modules.sparepart.model.vo.SparePartRequDetailVO;

import java.util.List;

/**
 * 通知推送Manager
 *
 * @author YuXD
 * @since 2021-11-17
 */
public interface INoticeManager {

    /**
     * 推送备件到货通知
     *
     * @param partNeedsItem 备件需求计划明细
     * @param operator      入库操作人员工号
     * @param deliveryNum   到货数量
     */
    void pushDeliveryNotice(SparePartRequDetailVO partNeedsItem, String operator, Integer deliveryNum);

    /**
     * 推送备件的分类信息未维护通知
     *
     * @param sp 备件
     */
    void pushSpCatUnSetNotice(SparePartEntity sp);

    /**
     * 推送领料单审批通知
     *
     * @param materialBase 领料单
     */
    void pushLldspNotice(MaterialBaseEntity materialBase);

    /**
     * 推送站内消息
     *
     * @param busType          业务类型
     * @param secondaryBusType 子业务类型
     * @param title            标题
     * @param msgContent       消息内容
     * @param msgCategory      消息分类
     * @param openType         打开方式
     * @param openPage
     * @param userIds
     */
    void generateStationMessage(String busType, String secondaryBusType, String title, String msgContent, String msgCategory, String openType, String openPage, String userIds);

    /**
     * 推送取消在途通知
     *
     * @param partNeedsItem    备件需求计划明细
     * @param operator         入库操作人员工号
     * @param cancelTransitNum 取消在途数
     */
    void pushCancelTransitNotice(SparePartRequDetailVO partNeedsItem, String operator, Integer cancelTransitNum);

    /**
     * 推送空压设备保养提醒通知
     *
     * @param deviceList 空压设备列表
     */
    void pushKYDevMaintenanceNotice(List<DeviceInfoEntity> deviceList);

    /**
     * 用户发起领料时，备件安全库存不足时推送消息
     *
     * @param workshop      车间ID
     * @param sparePartName 备件名称
     */
    void pushUnderSafeStockNotice(String workshop, String sparePartName);

    /**
     * 推送设备报修通知
     *
     * @param businessId
     */
    void pushDeviceCallRepairNotice(String businessId);

    /**
     * 推送设备报修-催单通知
     *
     * @param businessId
     */
    void pushDeviceCDNotice(String businessId);

    /**
     * 推送设备维修上报通知
     *
     * @param businessId
     */
    void pushDeviceUploadNotice(String businessId);

    /**
     * 推送设备维护派工通知
     *
     * @param businessId
     */
    void pushDeviceMaintenanceNotice(String businessId);

    /**
     * 推送设备自主维护派工通知
     *
     * @param businessId
     */
    void pushDeviceAmNotice(String businessId);

    /**
     * 推送新增临时PM维护计划通知
     *
     * @param businessId
     */
    void pushNewlyAddTemMaintenancePlanNotice(String businessId);

    /**
     * 推送新增临时AM维护计划通知
     *
     * @param businessId
     */
    void pushNewlyAddTemAmPlanNotice(String businessId);

    /**
     * 推送模具维护派工通知
     *
     * @param businessId
     */
    void pushMoldMaintenanceNotice(String businessId);

}
